package vistas;

import java.awt.EventQueue;

import javax.swing.JDialog;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;

import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.JPanel;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.awt.Dimension;
import javax.swing.border.TitledBorder;
import java.awt.Color;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JComboBox;
import java.awt.SystemColor;
import javax.swing.UIManager;
import javax.swing.DefaultComboBoxModel;

import clases.Inkassocn_class;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.ImageIcon;

public class COBROS_buscar extends JDialog {
	private JTable tablaListado;
	private JTable tablaHistorial;
	private JComboBox comboMunicipios;
	private JComboBox comboDepartamentos;
	private Inkassocn_class cni;
	private ResultSet resultado;
	private String query;
	private ArrayList parametros;
	private JTree treeGestiones;
	private SimpleDateFormat sdf, sdfmostrar;
	JLabel lblcodigo;
	JLabel lblnombres;
	JLabel lbldireccionreside;
	JLabel lbldireccionsiembra;
	JLabel lblfechaentrega;
	JLabel lblultimoestatus;
	JLabel lblmontoinicial;
	JLabel lblintereses;
	JLabel lblmontototal;
	JTextArea detalleGestion;
	private String []comentariosHistorial;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					COBROS_buscar dialog = new COBROS_buscar("");
					dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					dialog.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the dialog.
	 */
	public COBROS_buscar(final String codigogestor) {
		setBackground(Color.RED);
		setTitle("COBROS");
		setBounds(100, 100, 1117, 690);
		
		{
			cni = new Inkassocn_class();
			sdf = new SimpleDateFormat("yyyy-MM-dd");
			sdfmostrar = new SimpleDateFormat("dd-MM-yyyy");
		}
		
		JPanel panel = new JPanel();
		panel.setBackground(new Color(205, 74, 76));
		panel.setPreferredSize(new Dimension(450, 100));
		panel.setSize(new Dimension(100, 100));
		panel.setMinimumSize(new Dimension(100, 100));
		panel.setBounds(new Rectangle(0, 0, 150, 150));
		getContentPane().add(panel, BorderLayout.EAST);
		panel.setLayout(null);
		
		JPanel panel_1 = new JPanel();
		panel_1.setForeground(SystemColor.control);
		panel_1.setOpaque(false);
		panel_1.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Informaci\u00F3n General", TitledBorder.LEFT, TitledBorder.TOP, null, SystemColor.control));
		panel_1.setBounds(10, 11, 430, 574);
		panel.add(panel_1);
		panel_1.setLayout(null);
		
		JLabel lblCodigo = new JLabel("Codigo");
		lblCodigo.setForeground(SystemColor.control);
		lblCodigo.setFont(new Font("Arial", Font.PLAIN, 13));
		lblCodigo.setBounds(10, 22, 46, 14);
		panel_1.add(lblCodigo);
		
		lblcodigo = new JLabel("[codigo]");
		lblcodigo.setForeground(SystemColor.inactiveCaptionBorder);
		lblcodigo.setFont(new Font("Arial", Font.BOLD, 13));
		lblcodigo.setBounds(93, 22, 197, 14);
		panel_1.add(lblcodigo);
		
		JLabel lblNombres = new JLabel("Nombres");
		lblNombres.setForeground(SystemColor.control);
		lblNombres.setFont(new Font("Arial", Font.PLAIN, 13));
		lblNombres.setBounds(10, 47, 73, 14);
		panel_1.add(lblNombres);
		
		lblnombres = new JLabel("[nombres]");
		lblnombres.setForeground(SystemColor.inactiveCaptionBorder);
		lblnombres.setFont(new Font("Arial", Font.BOLD, 13));
		lblnombres.setBounds(93, 48, 277, 14);
		panel_1.add(lblnombres);
		
		JLabel lblDireccion = new JLabel("<html><body>Direccion<br>Reside</body></html>");
		lblDireccion.setForeground(SystemColor.control);
		lblDireccion.setFont(new Font("Arial", Font.PLAIN, 13));
		lblDireccion.setBounds(10, 72, 73, 33);
		panel_1.add(lblDireccion);
		
		lbldireccionreside = new JLabel("[direccionreside]");
		lbldireccionreside.setForeground(SystemColor.inactiveCaptionBorder);
		lbldireccionreside.setVerticalAlignment(SwingConstants.TOP);
		lbldireccionreside.setFont(new Font("Arial", Font.BOLD, 13));
		lbldireccionreside.setBounds(93, 73, 277, 32);
		panel_1.add(lbldireccionreside);
		
		lbldireccionsiembra = new JLabel("[direccionsiembra]");
		lbldireccionsiembra.setForeground(SystemColor.inactiveCaptionBorder);
		lbldireccionsiembra.setVerticalAlignment(SwingConstants.TOP);
		lbldireccionsiembra.setFont(new Font("Arial", Font.BOLD, 13));
		lbldireccionsiembra.setBounds(93, 117, 277, 32);
		panel_1.add(lbldireccionsiembra);
		
		JLabel lbldireccionSiembra = new JLabel("<html><body>Direccion<br>Siembra</body></html>");
		lbldireccionSiembra.setForeground(SystemColor.control);
		lbldireccionSiembra.setFont(new Font("Arial", Font.PLAIN, 13));
		lbldireccionSiembra.setBounds(10, 116, 73, 33);
		panel_1.add(lbldireccionSiembra);
		
		JLabel lblFechaEntrega = new JLabel("<html><body>Fecha<br>Entrega</body></html>");
		lblFechaEntrega.setForeground(SystemColor.control);
		lblFechaEntrega.setFont(new Font("Arial", Font.PLAIN, 13));
		lblFechaEntrega.setBounds(10, 160, 73, 32);
		panel_1.add(lblFechaEntrega);
		
		lblfechaentrega = new JLabel("[fechaentrega]");
		lblfechaentrega.setForeground(SystemColor.inactiveCaptionBorder);
		lblfechaentrega.setFont(new Font("Arial", Font.BOLD, 13));
		lblfechaentrega.setBounds(93, 161, 277, 14);
		panel_1.add(lblfechaentrega);
		
		JLabel lblEstatus = new JLabel("Estatus");
		lblEstatus.setForeground(SystemColor.control);
		lblEstatus.setFont(new Font("Arial", Font.PLAIN, 13));
		lblEstatus.setBounds(10, 203, 73, 14);
		panel_1.add(lblEstatus);
		
		lblultimoestatus = new JLabel("[ultimoestatus]");
		lblultimoestatus.setForeground(SystemColor.inactiveCaptionBorder);
		lblultimoestatus.setFont(new Font("Arial", Font.BOLD, 13));
		lblultimoestatus.setBounds(93, 204, 277, 14);
		panel_1.add(lblultimoestatus);
		
		JLabel lblMonto = new JLabel("Monto Inicial");
		lblMonto.setForeground(SystemColor.control);
		lblMonto.setFont(new Font("Arial", Font.PLAIN, 13));
		lblMonto.setBounds(10, 228, 73, 14);
		panel_1.add(lblMonto);
		
		lblmontoinicial = new JLabel("[montoinicial]");
		lblmontoinicial.setForeground(SystemColor.inactiveCaptionBorder);
		lblmontoinicial.setFont(new Font("Arial", Font.BOLD, 13));
		lblmontoinicial.setBounds(10, 254, 93, 14);
		panel_1.add(lblmontoinicial);
		
		lblintereses = new JLabel("[intereses]");
		lblintereses.setForeground(SystemColor.inactiveCaptionBorder);
		lblintereses.setFont(new Font("Arial", Font.BOLD, 13));
		lblintereses.setBounds(165, 254, 77, 14);
		panel_1.add(lblintereses);
		
		JLabel lblMontoTotal = new JLabel("Intereses");
		lblMontoTotal.setForeground(SystemColor.control);
		lblMontoTotal.setFont(new Font("Arial", Font.PLAIN, 13));
		lblMontoTotal.setBounds(165, 229, 53, 14);
		panel_1.add(lblMontoTotal);
		
		lblmontototal = new JLabel("[montototal]");
		lblmontototal.setForeground(SystemColor.inactiveCaptionBorder);
		lblmontototal.setFont(new Font("Arial", Font.BOLD, 13));
		lblmontototal.setBounds(297, 254, 93, 14);
		panel_1.add(lblmontototal);
		
		JLabel lblMontoTotal_1 = new JLabel("Monto Total");
		lblMontoTotal_1.setForeground(SystemColor.control);
		lblMontoTotal_1.setFont(new Font("Arial", Font.PLAIN, 13));
		lblMontoTotal_1.setBounds(297, 229, 73, 14);
		panel_1.add(lblMontoTotal_1);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(10, 279, 410, 145);
		panel_1.add(scrollPane_1);
		
		tablaHistorial = new JTable();
		tablaHistorial.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent arg0) {
				try
				{
					detalleGestion.setText("");
					detalleGestion.setText(tablaHistorial.getValueAt(tablaHistorial.getSelectedRow(), 2).toString()+" -> "+tablaHistorial.getValueAt(tablaHistorial.getSelectedRow(), 3).toString()+"\n");
					detalleGestion.append(comentariosHistorial[tablaHistorial.getSelectedRow()].toString());
				}catch(Exception ex)
				{
					JOptionPane.showMessageDialog(null, ex.toString());
				}
			}
		});
		tablaHistorial.setModel(new DefaultTableModel(
			new Object[][] {
			},
			new String[] {
				"codigohistorial", "Fecha", "Gestion", "Resolucion", "Gestor"
			}
		));
		tablaHistorial.getColumnModel().getColumn(0).setPreferredWidth(15);
		tablaHistorial.getColumnModel().getColumn(0).setMinWidth(0);
		tablaHistorial.getColumnModel().getColumn(0).setMaxWidth(0);
		scrollPane_1.setViewportView(tablaHistorial);
		
		JLabel lblDetalle = new JLabel("Detalle");
		lblDetalle.setForeground(SystemColor.control);
		lblDetalle.setFont(new Font("Arial", Font.PLAIN, 13));
		lblDetalle.setBounds(10, 435, 73, 14);
		panel_1.add(lblDetalle);
		
		detalleGestion = new JTextArea();
		detalleGestion.setEditable(false);
		detalleGestion.setWrapStyleWord(true);
		detalleGestion.setLineWrap(true);
		detalleGestion.setBounds(10, 460, 410, 72);
		panel_1.add(detalleGestion);
		
		JButton btnBuscar = new JButton("Buscar");
		btnBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try
				{
					
					String criteriobusqueda = JOptionPane.showInputDialog(null,"Digite cliente a buscar","Busqueda de Clientes", JOptionPane.INFORMATION_MESSAGE);
					if(criteriobusqueda.toString().trim().length()>0)
					{
						if(criteriobusqueda.toString().trim().startsWith("t:"))
						{
							query = "SELECT codigo, nombres FROM cobranza_persons WHERE telefono_primario LIKE ?";
							parametros = new ArrayList();
							parametros.add("%"+criteriobusqueda.toString().trim().substring(2)+"%");
						}
						else 
						{
							query = "SELECT codigo, nombres FROM cobranza_persons WHERE codigo = ? OR nombres LIKE ?";
							parametros = new ArrayList();
							parametros.add(criteriobusqueda.toString().trim());
							parametros.add("%"+criteriobusqueda.toString().trim()+"%");
						}

						ResultSet resultadobusqueda = cni.consulta(query, parametros);
						DefaultTableModel mlistado = (DefaultTableModel) tablaListado.getModel();
						while(mlistado.getRowCount()>0) mlistado.removeRow(0);
						int filas=0;
						while(resultadobusqueda.next())
						{
							mlistado.addRow(new Object[filas]);
							mlistado.setValueAt(resultadobusqueda.getString("codigo"), filas, 0);
							mlistado.setValueAt(resultadobusqueda.getString("nombres"), filas, 1);
							filas++;
						}
					}
					
				}catch(Exception ex)
				{
					JOptionPane.showMessageDialog(null, ex.toString());
				}
			}
		});
		btnBuscar.setFont(new Font("Arial", Font.BOLD, 13));
		btnBuscar.setForeground(SystemColor.control);
		btnBuscar.setContentAreaFilled(false);
		btnBuscar.setBorderPainted(false);
		btnBuscar.setIcon(new ImageIcon(COBROS_buscar.class.getResource("/images/buscar.png")));
		btnBuscar.setBounds(98, 596, 126, 35);
		panel.add(btnBuscar);
		
		JButton btnLlamar = new JButton("Llamar");
		btnLlamar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				COBROS_gestionar gestionar = new COBROS_gestionar(tablaListado.getValueAt(tablaListado.getSelectedRow(), 0).toString(), codigogestor);
				gestionar.setVisible(true);
			}
		});
		btnLlamar.setFont(new Font("Arial", Font.BOLD, 13));
		btnLlamar.setForeground(SystemColor.control);
		btnLlamar.setContentAreaFilled(false);
		btnLlamar.setBorderPainted(false);
		btnLlamar.setIcon(new ImageIcon(COBROS_buscar.class.getResource("/images/llamar.png")));
		btnLlamar.setBounds(234, 596, 126, 35);
		panel.add(btnLlamar);
		
		JScrollPane scrollPane = new JScrollPane();
		
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		
		tablaListado = new JTable();
		tablaListado.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent arg0) {
				if(tablaListado.getSelectedRow()>-1)
				{

					try
					{
						query = "SELECT * FROM cobranza_persons WHERE codigo=?";
						parametros = new ArrayList();
						parametros.add(tablaListado.getValueAt(tablaListado.getSelectedRow(), 0).toString());
						resultado = cni.consulta(query, parametros);
						while(resultado.next())
						{
							lblcodigo.setText(resultado.getString("codigo"));
							lblnombres.setText(resultado.getString("nombres"));
							lbldireccionreside.setText(resultado.getString("direccion_reside")+"\n"+resultado.getString("municipio_reside")+"\n"+resultado.getString("departamento_reside"));
							lbldireccionsiembra.setText(resultado.getString("direccion_siembra")+"\n"+resultado.getString("municipio_siembra")+"\n"+resultado.getString("departamento_siembra"));
							lblfechaentrega.setText(sdfmostrar.format(resultado.getDate("fecha_cheque")));
							lblultimoestatus.setText(resultado.getString("gestion")+": "+resultado.getString("resolucion"));
							lblmontoinicial.setText("$"+resultado.getDouble("monto_inicial"));
							lblintereses.setText("$"+resultado.getDouble("interesDinero"));
							lblmontototal.setText("$"+resultado.getDouble("monto_total"));
						}
						
						//CARGAR EL HISTORIAL
						DefaultTableModel mhistorial = (DefaultTableModel) tablaHistorial.getModel();
						int filas=0;
						while(mhistorial.getRowCount()>0) mhistorial.removeRow(0);
						
						//CANTIDAD DE ELEMENTOS EN EL HISTORIAL PARA EL CLIENTE ESPECIFICO
						query = "SELECT COUNT(*) AS cantidad FROM cobranza_history WHERE codigo=?";
						parametros = new ArrayList();
						parametros.add(tablaListado.getValueAt(tablaListado.getSelectedRow(), 0).toString());
						resultado = cni.consulta(query, parametros);
						resultado.next();
						comentariosHistorial = new String[resultado.getInt("cantidad")];
						
						//LLENAR TABLA DE HISTORIAL DE GESTIONES
						query = "SELECT * FROM cobranza_history WHERE codigo=?";
						parametros = new ArrayList();
						parametros.add(tablaListado.getValueAt(tablaListado.getSelectedRow(), 0).toString());
						resultado = cni.consulta(query, parametros);
						
						while(resultado.next())
						{
							mhistorial.addRow(new Object[filas]);
							mhistorial.setValueAt(resultado.getString("codigo_llamada"), filas, 0);
							mhistorial.setValueAt(sdfmostrar.format(resultado.getDate("fecha")), filas, 1);
							mhistorial.setValueAt(resultado.getString("gestion"), filas, 2);
							mhistorial.setValueAt(resultado.getString("resolucion"), filas, 3);
							mhistorial.setValueAt(resultado.getString("gestor"), filas, 4);
							comentariosHistorial[filas]=sdfmostrar.format(resultado.getDate("fecha"))+", a las "+resultado.getString("hora")+" "+resultado.getString("amp")+"\n"+resultado.getString("comentario");
							filas++;
						}
						
					}catch(Exception ex)
					{
						JOptionPane.showMessageDialog(null, ex.toString());
					}
				
				}
			}
		});
		tablaListado.setModel(new DefaultTableModel(
			new Object[][] {
			},
			new String[] {
				"Codigo", "Nombres"
			}
		));
		tablaListado.getColumnModel().getColumn(0).setPreferredWidth(125);
		tablaListado.getColumnModel().getColumn(0).setMinWidth(125);
		tablaListado.getColumnModel().getColumn(0).setMaxWidth(125);
		tablaListado.getColumnModel().getColumn(1).setPreferredWidth(300);
		tablaListado.getColumnModel().getColumn(1).setMinWidth(300);
		tablaListado.getColumnModel().getColumn(1).setMaxWidth(300);
		scrollPane.setViewportView(tablaListado);
		
		JPanel panel_2 = new JPanel();
		panel_2.setBackground(new Color(205, 74, 76));
		getContentPane().add(panel_2, BorderLayout.WEST);
		panel_2.setPreferredSize(new Dimension(225, 10));
		panel_2.setLayout(null);
		
		treeGestiones = new JTree();
		//CARGAR EN LA TABLA EL LISTADO DE LOS CLIENTES
		treeGestiones.addTreeSelectionListener(new TreeSelectionListener() {
			public void valueChanged(TreeSelectionEvent arg0) {
				boolean valido=false;
				//OBTENER EL NODO SELECCIONADO
				DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)treeGestiones.getLastSelectedPathComponent();

				try
				{
					//MODELO DE LA TABLA
					DefaultTableModel mlistado = (DefaultTableModel)tablaListado.getModel();
					int filas=0;
					while(mlistado.getRowCount()>0) mlistado.removeRow(0);
							
					//MOSTRAR TODOS
					if(comboDepartamentos.getSelectedIndex()==0)
					{
						if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("General"))
						{
							query = "SELECT personas.codigo, personas.nombres FROM cobranza_persons AS personas LIMIT 0,100";
							resultado = cni.consulta(query);
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Volver a Llamar"))
						{
							query = "SELECT volver.codigoUsuario,personas.nombres, personas.codigo, personas.finalizado, personas.gestor, personas.cobros,personas.condonacion, volver.fecha_vllamar, volver.otroCredito, volver.atendido FROM cobranza_callback as volver"
                            + " INNER JOIN cobranza_persons as personas ON volver.codigoUsuario=personas.codigo WHERE personas.cobros=? AND volver.atendido=? "
                            + "AND volver.fecha_vllamar>=?  ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							resultado = cni.consulta(query, parametros);
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Promesas Efectivo"))
						{
							query = "SELECT promesas.codigoCliente,personas.nombres, personas.finalizado,personas.condonacion, personas.codigo,promesas.fpromesa, promesas.monto, promesas.fquintales, personas.gestor, personas.cobros FROM cobranza_cpromesa as promesas"
                            + " INNER JOIN cobranza_persons as personas ON promesas.codigoCliente=personas.codigo WHERE personas.cobros=? AND personas.gestor!=? AND promesas.monto>? AND fpromesa>=? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							resultado = cni.consulta(query, parametros);
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Promesas Cultivo"))
						{
							query = "SELECT promesas.codigoCliente,personas.finalizado,personas.nombres, personas.codigo,promesas.fpromesa, promesas.quintales, promesas.fquintales, personas.condonacion, personas.gestor, personas.cobros FROM cobranza_cpromesa as promesas"
                            + " INNER JOIN cobranza_persons as personas ON promesas.codigoCliente=personas.codigo WHERE personas.cobros=?AND personas.gestor!=? AND promesas.quintales>? AND fquintales>=? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							resultado = cni.consulta(query, parametros);
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("En Mora"))
						{
							query = "SELECT * FROM cobranza_persons WHERE cobros=? AND DATEDIFF(CURDATE(),plazo)>? AND gestor!=? ORDER BY (monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("0");
							parametros.add("Y");
							resultado = cni.consulta(query, parametros);
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Finalizado"))
						{
							query = "SELECT * FROM cobranza_persons WHERE cobros=? AND gestor=? ORDER BY (monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							resultado = cni.consulta(query, parametros);
							valido=true;
						}
					}
					//POR DEPARTAMENTO
					if(comboDepartamentos.getSelectedIndex()>0)
					{
						if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("General"))
						{
							query = "SELECT personas.codigo, personas.nombres FROM cobranza_persons AS personas WHERE departamento_reside LIKE ? LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Volver a Llamar"))
						{
							query = "SELECT volver.codigoUsuario,personas.nombres, personas.codigo, personas.finalizado, personas.gestor, personas.cobros,personas.condonacion, volver.fecha_vllamar, volver.otroCredito, volver.atendido FROM cobranza_callback as volver"
                            + " INNER JOIN cobranza_persons as personas ON volver.codigoUsuario=personas.codigo WHERE personas.cobros=? AND volver.atendido=? "
                            + "AND volver.fecha_vllamar>=? AND departamento_reside LIKE ? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Promesas Efectivo"))
						{
							query = "SELECT promesas.codigoCliente,personas.nombres, personas.finalizado,personas.condonacion, personas.codigo,promesas.fpromesa, promesas.monto, promesas.fquintales, personas.gestor, personas.cobros FROM cobranza_cpromesa as promesas"
                            + " INNER JOIN cobranza_persons as personas ON promesas.codigoCliente=personas.codigo WHERE personas.cobros=? AND personas.gestor!=? AND promesas.monto>? AND fpromesa>=? AND departamento_reside LIKE ? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Promesas Cultivo"))
						{
							query = "SELECT promesas.codigoCliente,personas.finalizado,personas.nombres, personas.codigo,promesas.fpromesa, promesas.quintales, promesas.fquintales, personas.condonacion, personas.gestor, personas.cobros FROM cobranza_cpromesa as promesas"
                            + " INNER JOIN cobranza_persons as personas ON promesas.codigoCliente=personas.codigo WHERE personas.cobros=?AND personas.gestor!=? AND promesas.quintales>? AND fquintales>=? AND departamento_reside LIKE ? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("En Mora"))
						{
							query = "SELECT * FROM cobranza_persons WHERE cobros=? AND DATEDIFF(CURDATE(),plazo)>? AND gestor!=? AND departamento_reside LIKE ? ORDER BY (monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("0");
							parametros.add("Y");
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Finalizado"))
						{
							query = "SELECT * FROM cobranza_persons WHERE cobros=? AND gestor=? AND departamento_reside LIKE ? ORDER BY (monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							valido=true;
						}
						//EJECUTAR LA CONSULTA
						if(valido)	resultado = cni.consulta(query, parametros);
					}
					//DEPARTAMENTO/MUNICIPIO
					if(comboDepartamentos.getSelectedIndex()>0 && comboMunicipios.getSelectedIndex()>0)
					{

						if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("General"))
						{
							query = "SELECT personas.codigo, personas.nombres FROM cobranza_persons AS personas WHERE departamento_reside LIKE ? AND municipio_reside LIKE ? LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							parametros.add("%"+comboMunicipios.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Volver a Llamar"))
						{
							query = "SELECT volver.codigoUsuario,personas.nombres, personas.codigo, personas.finalizado, personas.gestor, personas.cobros,personas.condonacion, volver.fecha_vllamar, volver.otroCredito, volver.atendido FROM cobranza_callback as volver"
                            + " INNER JOIN cobranza_persons as personas ON volver.codigoUsuario=personas.codigo WHERE personas.cobros=? AND volver.atendido=? "
                            + "AND volver.fecha_vllamar>=? AND departamento_reside LIKE ? AND municipio_reside LIKE ? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							parametros.add("%"+comboMunicipios.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Promesas Efectivo"))
						{
							query = "SELECT promesas.codigoCliente,personas.nombres, personas.finalizado,personas.condonacion, personas.codigo,promesas.fpromesa, promesas.monto, promesas.fquintales, personas.gestor, personas.cobros FROM cobranza_cpromesa as promesas"
                            + " INNER JOIN cobranza_persons as personas ON promesas.codigoCliente=personas.codigo WHERE personas.cobros=? AND personas.gestor!=? AND promesas.monto>? AND fpromesa>=? AND departamento_reside LIKE ? AND municipio_reside LIKE ? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							parametros.add("%"+comboMunicipios.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Promesas Cultivo"))
						{
							query = "SELECT promesas.codigoCliente,personas.finalizado,personas.nombres, personas.codigo,promesas.fpromesa, promesas.quintales, promesas.fquintales, personas.condonacion, personas.gestor, personas.cobros FROM cobranza_cpromesa as promesas"
                            + " INNER JOIN cobranza_persons as personas ON promesas.codigoCliente=personas.codigo WHERE personas.cobros=?AND personas.gestor!=? AND promesas.quintales>? AND fquintales>=? AND departamento_reside LIKE ? AND municipio_reside LIKE ? ORDER BY (personas.monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("0");
							parametros.add(sdf.format(new Date()));
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							parametros.add("%"+comboMunicipios.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("En Mora"))
						{
							query = "SELECT * FROM cobranza_persons WHERE cobros=? AND DATEDIFF(CURDATE(),plazo)>? AND gestor!=? AND departamento_reside LIKE ? AND municipio_reside LIKE ? ORDER BY (monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("0");
							parametros.add("Y");
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							parametros.add("%"+comboMunicipios.getSelectedItem().toString()+"%");
							valido=true;
						}
						else if(selectedNode.getUserObject().toString().trim().equalsIgnoreCase("Finalizado"))
						{
							query = "SELECT * FROM cobranza_persons WHERE cobros=? AND gestor=? AND departamento_reside LIKE ? AND municipio_reside LIKE ? ORDER BY (monto_inicial) DESC LIMIT 0,100";
							parametros = new ArrayList();
							parametros.add("1");
							parametros.add("Y");
							parametros.add("%"+comboDepartamentos.getSelectedItem().toString()+"%");
							parametros.add("%"+comboMunicipios.getSelectedItem().toString()+"%");
							valido=true;
						}
						//EJECUTAR LA CONSULTA
						if(valido) resultado = cni.consulta(query, parametros);
					
					}
					
					
					//MOSTRAR LOS DATOS EN TABLA DE LISTADO
					if(valido)
					{
						while(resultado.next())
						{
							mlistado.addRow(new Object[filas]);
							mlistado.setValueAt(resultado.getString("personas.codigo"), filas, 0);
							mlistado.setValueAt(resultado.getString("personas.nombres"), filas, 1);
							filas++;
						}
						cni.desconectar();
					}
					
				}catch(Exception ex)
				{
					JOptionPane.showMessageDialog(null, ex.toString());
				}
			}
		});
		
		treeGestiones.setForeground(SystemColor.inactiveCaptionText);
		treeGestiones.setFont(new Font("Arial", Font.PLAIN, 12));
		treeGestiones.setBackground(SystemColor.textHighlightText);
		treeGestiones.setModel(new DefaultTreeModel(
			new DefaultMutableTreeNode("COBRANZA") {
				{
					DefaultMutableTreeNode node_1;
					node_1 = new DefaultMutableTreeNode("Gestiones");
						node_1.add(new DefaultMutableTreeNode("General"));
						node_1.add(new DefaultMutableTreeNode("Volver a Llamar"));
						node_1.add(new DefaultMutableTreeNode("Promesas Efectivo"));
						node_1.add(new DefaultMutableTreeNode("Promesas Cultivo"));
						node_1.add(new DefaultMutableTreeNode("En Mora"));
						node_1.add(new DefaultMutableTreeNode("Finalizados"));
					add(node_1);
				}
			}
		));
		treeGestiones.setBounds(0, 105, 225, 547);
		treeGestiones.setPreferredSize(new Dimension(225, 64));
		panel_2.add(treeGestiones);
		
		comboDepartamentos = new JComboBox();
		comboDepartamentos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
		            comboMunicipios.removeAllItems();
		            comboMunicipios.addItem("Todos");
		            if (comboDepartamentos.getSelectedIndex() != 0) {
		            	query = "SELECT DISTINCT(municipio_reside) FROM cobranza_persons WHERE departamento_reside LIKE ?";
		            	parametros = new ArrayList();
		            	parametros.add("%"+comboDepartamentos.getSelectedItem()+"%");
		                ResultSet resultadodpto  = cni.consulta(query, parametros);
		                //MODELO COMBOBOX
		                DefaultComboBoxModel mcomboMunicipios = (DefaultComboBoxModel)comboMunicipios.getModel();
		                comboMunicipios.removeAllItems();
		                while(resultadodpto.next())
		                {
		                	mcomboMunicipios.addElement(resultadodpto.getString("municipio_reside"));
		                }
		                resultadodpto.close();
		                cni.desconectar();
		            } else {
		                comboMunicipios.setSelectedIndex(0);
		            }
		        } catch (Exception ex) {
		            JOptionPane.showMessageDialog(null, ex);
		        }
			}
		});
		comboDepartamentos.setModel(new DefaultComboBoxModel(new String[] {"Todos", "Ahuachapan", "Santa Ana", "Sonsonate", "Usulutan", "San Miguel", "Morazan", "La Union", "La Libertad", "Chalatenango", "Cuscatlan", "San Salvador", "La Paz", "Caba\u00F1as", "San Vicente"}));
		comboDepartamentos.setBounds(10, 27, 205, 20);
		panel_2.add(comboDepartamentos);
		
		JLabel lblDepartamento = new JLabel("Departamento");
		lblDepartamento.setForeground(SystemColor.control);
		lblDepartamento.setFont(new Font("Arial", Font.PLAIN, 13));
		lblDepartamento.setBounds(10, 11, 86, 14);
		panel_2.add(lblDepartamento);
		
		comboMunicipios = new JComboBox();
		comboMunicipios.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try
				{
					DefaultTableModel mlistado = (DefaultTableModel) tablaListado.getModel();
	                int filas=0;
	                while(mlistado.getRowCount()>0) mlistado.removeRow(0);
	                
					query = "SELECT codigo, nombres FROM cobranza_persons WHERE departamento_reside LIKE ? AND municipio_reside LIKE ? LIMIT 0,100";
					parametros = new ArrayList();
					parametros.add(comboDepartamentos.getSelectedItem());
					parametros.add(comboMunicipios.getSelectedItem());
					resultado = cni.consulta(query, parametros);
					while(resultado.next())
					{
						mlistado.addRow(new Object[filas]);
						mlistado.setValueAt(resultado.getString("codigo"), filas, 0);
						mlistado.setValueAt(resultado.getString("nombres"), filas, 1);
						filas++;
					}
					cni.desconectar();
				}catch(Exception ex)
				{
					JOptionPane.showMessageDialog(null, ex.toString());
				}
			}
		});
		comboMunicipios.setBounds(10, 74, 205, 20);
		panel_2.add(comboMunicipios);
		
		JLabel lblMunicipio = new JLabel("Municipio");
		lblMunicipio.setForeground(SystemColor.control);
		lblMunicipio.setFont(new Font("Arial", Font.PLAIN, 13));
		lblMunicipio.setBounds(10, 58, 86, 14);
		panel_2.add(lblMunicipio);

	}
}
